canal adapter同步异常:field name is null or empty

您所在的位置:网站首页 field name canal adapter同步异常:field name is null or empty

canal adapter同步异常:field name is null or empty

2023-07-13 06:22| 来源: 网络整理| 查看: 265

现象

在使用批量同步数据时出现错误:

curl http://127.0.0.1:8081/etl/es7/test-user/test_user.yml -X POST {"succeeded":false,"resultMessage":"导入ES 数据:666 条","errorMessage":"test_user etl failed! ==>field name is null or empty\ntest_user etl failed! ==>field name is null or empty"}

adapter日志异常

ERROR c.a.otter.canal.adapter.launcher.loader.AdapterProcessor - java.lang.NullPointerException java.lang.RuntimeException: java.lang.NullPointerException at com.alibaba.otter.canal.client.adapter.es.core.service.ESSyncService.sync(ESSyncService.java:116) ~[na:na] at com.alibaba.otter.canal.client.adapter.es.core.service.ESSyncService.sync(ESSyncService.java:64) ~[na:na] at com.alibaba.otter.canal.client.adapter.es.core.ESAdapter.sync(ESAdapter.java:115) ~[na:na] at com.alibaba.otter.canal.client.adapter.es.core.ESAdapter.sync(ESAdapter.java:94) ~[na:na] at com.alibaba.otter.canal.adapter.launcher.loader.AdapterProcessor.batchSync(AdapterProcessor.java:139) ~[client-adapter.launcher-1.1.5-SNAPSHOT.jar:na] 原因分析

提示信息为字段名为null或空,误导以为是字段的问题,其实不是,应该是字段空值导致,但不是对任何字段都有空值错误,最后确定只有在es索引的主键_id字段为空时才会出现异常。

因为在我的导入场景中,es使用了userid作为主键,批量导入时数据较多,其中存在个别userid为空的情况没有发现,导致在全量导入时出现了异常。

 

解决方案 方案一:

使用非空字段作为es的主键_id;

方案二:

在esMapping导入配置中增加条件赛选非空数据,如:

etlCondition: "where userid between {} and {}" #指定userid

 

 

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3